package com.macro.mall.service;

import com.macro.model.UmsMenu;
import com.macro.model.UmsPermission;
import com.macro.model.UmsResource;
import com.macro.model.UmsRole;
import org.springframework.transaction.annotation.Transactional;


import java.util.List;

/**
 * 后台角色管理Service
 */
public interface UmsRoleService {

    /**
     *  添加角色
     */
    int create(UmsRole role);

    /**
     *  修改角色信息
     */
    int update(Long roleId,UmsRole role);

    /**
     *  批量删除角色
     */
    int delete(List<Long> Ids);

    /**
     *  获取指定角色权限
     */
    List<UmsPermission> getPermissionList(Long roleId);

    /**
     *  修改指定角色的权限
     */
    @Transactional
    int updatePermission(Long roleId,List<Long> permissions);

    /**
     *  获取所有角色列表
     */
    List<UmsRole> list();

    /**
     *   分页获取角色列表
     */
    List<UmsRole> list(String keyword,Integer pageNumber,Integer pageSize);

    /**
     *  根据管理员ID 获取菜单
     */
    List<UmsMenu> getMenuList(Long adminId);

    /**
     *  获取角色相关菜单
     */
    List<UmsMenu> listMenu(Long roleId);

    /**
     *  获取角色资源
     */
    List<UmsResource> listResource(Long roleId);

    /**
     *  给角色分配菜单
     */
    @Transactional
    int allowMenu(Long roleId,List<Long> menuList);

    /**
     *  给角色分配资源
     */
    @Transactional
    int allowResource(Long roleId,List<Long> resourceList);
}
